// 4. 数据抽象
/**
 * 1. 抽象例子
 *     遥控器，可以直接按按钮操作，但具体咋实现的用户不需要知道
 *     cout 是一个公共接口，但底层到底如何把数据输出到控制台的，你不需要知道 
 * 2. 数据抽象的好处
 *     + 类的内部受到保护，不会因无意的用户级错误导致对象状态受损 
 *     + 类实现可能随着时间的推移发生变化，以便应对不断变化的需求，或者应对那些要求不改变用户级代码的错误报告
 * 
 * 3. 访问标签强制抽象
 *      私有标签 private protected
 *          私有成员用户不需要知道，但却是类实现功能所必须的
 *      公共标签 public
 *          公有成员提供对外的接口
 *
 * 4. 设计策略
 *      抽象把代码分离为接口和实现。所以在设计组件时，必须保持接口独立于实现，这样，如果改变底层实现，接口也将保持不变
 *      在这种情况下，不管任何程序使用接口，接口都不会受到影响，只需要将最新的实现重新编译即可。
 * 
 * 扩展
 * 1. C++中组件
*/
#include <iostream>

#define __mark 1

#if 1 == __mark
/**
 * #
*/
int main(void)
{

  printf("-----------end-------------\n");
  return 0;
}
#elif 2 == __mark
int main(void)
{

  printf("-----------end-------------\n");
  return 0;
}
#endif
